home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 11
/
FM Towns Free Software Collection 11.iso
/
t_os
/
edu
/
kana
/
src
/
kana.bas
next >
Wrap
BASIC Source File
|
1995-08-15
|
6KB
|
174 lines
1000 '====================================================================
1010 '
1020 ' 『平仮名・片仮名の練習』
1030 ' by H.AOE 1995.07.06
1040 '====================================================================
1050 '
1060 *初期設定1
1070 COLOR 7,0,7,0:CLS '画面クリア
1080 DEFINT A-Z '整数変数に設定
1090 CLEAR,,,,,300000:DEF FONT"システム 16ドット" '文字フォント設定
1100 SCREEN 0 :SCREEN@ 0 'グラフィック1画面
1110 WINDOW(0,0)-(639,479):VIEW(0,0)-(639,479) '16色モード
1120 MOUSE 0:MOUSE 1,400,80,0 'マウス初期化
1130 DIM YOMI(3000) '発声用配列
1140 '
1150 *初期設定2
1160 '--------------------------------------------------------------------
1170 ' タイトル表示 ( 20, 20)-(399, 79)
1180 ' メインウインドウ ( 40,120)-(379,439)
1190 ' 五十音ボタン (420, 60)-(619,459)
1200 ' 読み書きスイッチ (420, 20)-(529, 49)
1210 ' 終了ボタン (540, 20)-(619, 49)
1220 ' 制御用変数 KANA= 0:平仮名 1:片仮名
1230 ' R_W= 0:書き方 1:読み方
1240 ' MOJI= 0:「あ」 ~ 45:「ん」
1250 ' LOOP= 1:同一文字種 2:文字種を変更する
1260 ' SPEED= 1:低速 ~ 2:標準 ~ 5:最高速
1270 '--------------------------------------------------------------------
1280 '画面の初期化
1290 FOR A=0 TO 15
1300 PALETTE A,[0,0,0]
1310 NEXT
1320 VIEW(0,0)-(639,479),%2
1330 LOAD@"TIFF\TITLE_0.TIF", ( 20, 20)
1340 LOAD@"TIFF\MAIN_WIN.TIF",( 20,100)
1350 LOAD@"TIFF\GOJU_0.TIF", (420, 60)
1360 LOAD@"TIFF\RW_0.TIF", (420, 20)
1370 LOAD@"TIFF\EXIT_B.TIF", (540, 20)
1380 GOSUB *PALETTE
1390 '変数の初期化
1400 KANA =0
1410 R_W =0
1420 MOJI =0
1430 SPEED=2
1440 '
1450 *START
1460 MOUSE 1,,,0
1470 LOOP=1
1480 ON KANA+1 GOSUB *平仮名,*片仮名
1490 MOUSE 1,,,1
1500 '
1510 *MAIN
1520 WHILE MOUSE(2,0)=0:WEND
1530 WHILE MOUSE(2,0):WEND
1540 MX=MOUSE(4,0):MY=MOUSE(5,0)
1550 IF MX>540 AND MX<619 AND MY> 20 AND MY< 49 THEN
1560 GOTO *EXIT
1570 ELSE IF MX> 22 AND MX< 37 AND MY>102 AND MY<117 THEN
1580 SPEED=SPEED-1
1590 IF SPEED<1 THEN SPEED=1
1600 ELSE IF MX>382 AND MX<397 AND MY>102 AND MY<117 THEN
1610 SPEED=SPEED+1
1620 IF SPEED>5 THEN SPEED=5
1630 ELSE IF MX>420 AND MX<529 AND MY> 20 AND MY< 49 THEN
1640 R_W=ABS(R_W-1)
1650 FILE$="TIFF\RW_"+MID$(STR$(R_W),2)+".TIF"
1660 LOAD@ FILE$,(420, 20)
1670 ELSE IF MX> 20 AND MX<399 AND MY> 20 AND MY< 79 THEN
1680 KANA=ABS(KANA-1):LOOP=2:MOUSE 1,,,0
1690 ELSE IF MX>420 AND MX<619 AND MY> 60 AND MY<459 THEN
1700 IF ((MX-420) MOD 40)<37 AND ((MY-60) MOD 40)<37 THEN GOSUB *SELECT
1710 ELSE IF MX> 40 AND MX<379 AND MY>120 AND MY<439 THEN
1720 GOSUB *DISPLAY
1730 ENDIF
1740 ON LOOP GOTO *MAIN,*START
1750 '
1760 *EXIT
1770 CLOSE
1780 END
1790 '
1800 *平仮名
1810 '--------------------------------------------------------------------
1820 ' データファイル、画面を平仮名に初期化する。
1830 '--------------------------------------------------------------------
1840 CLOSE
1850 LOAD@"TIFF\TITLE_0.TIF", ( 20, 20)
1860 LOAD@"TIFF\GOJU_0.TIF", (420, 60)
1870 LINE( 42,122)-(377,437),PSET,%15,BF
1880 OPEN"R",#1,"(4)HIRAGANA.DAT"
1890 FIELD #1,2 AS PX$,2 AS PY$
1900 RETURN
1910 '
1920 *片仮名
1930 '--------------------------------------------------------------------
1940 ' データファイル、画面を片仮名に初期化する。
1950 '--------------------------------------------------------------------
1960 CLOSE
1970 LOAD@"TIFF\TITLE_1.TIF", ( 20, 20)
1980 LOAD@"TIFF\GOJU_1.TIF", (420, 60)
1990 LINE( 42,122)-(377,437),PSET,%15,BF
2000 OPEN"R",#1,"(4)KATAKANA.DAT"
2010 FIELD #1,2 AS PX$,2 AS PY$
2020 RETURN
2030 '
2040 *DISPLAY
2050 '--------------------------------------------------------------------
2060 ' 1.データファイルに記録された座標に従って、連続的に円を描いていく
2070 ' ことで、文字を筆順どおりにダイナミックに表示する。
2080 ' ただし、R_W=0 のときだけ。
2090 ' COL:文字の色 ( 0:灰色 1:黒色 )
2100 ' 2.文字の読みを発声する。
2110 '--------------------------------------------------------------------
2120 GOSUB *LOAD_YOMI
2130 IF R_W=0 THEN
2140 MOUSE 1,,,0
2150 A=0
2160 GET#1,800*MOJI+SPEED*A+1
2170 PX=CVI(PX$):PY=CVI(PY$)
2180 CIRCLE(PX,PY),12,%(COL+7),,,,F
2190 WHILE PX>0 AND PY>0
2200 A=A+1
2210 GET#1,800*MOJI+SPEED*A+1
2220 PX=CVI(PX$):PY=CVI(PY$)
2230 IF PX>0 AND PY>0 THEN CIRCLE(PX,PY),12,%(COL+7),,,,F
2240 WEND
2250 COL=ABS(COL-1)
2260 MOUSE 1,,,1
2270 ENDIF
2280 PCMPLAY YOMI,127
2290 RETURN
2300 '
2310 *SELECT
2320 '--------------------------------------------------------------------
2330 ' 五十音ボタンで選ばれた文字を番号に変換し、変数MOJIに代入する。
2340 '--------------------------------------------------------------------
2350 MOJI=((MX-420) \ 40)+((MY-60) \ 40)*5
2360 IF MOJI=36 OR MOJI=38 OR MOJI=46 OR MOJI=48 THEN RETURN
2370 IF MOJI=37 THEN MOJI=36
2380 IF MOJI>38 THEN MOJI=MOJI-2
2390 IF MOJI=45 THEN MOJI=44
2400 IF MOJI=47 THEN MOJI=45
2410 LINE( 42,122)-(377,437),PSET,%15,BF
2420 COL=0
2430 GOSUB *DISPLAY
2440 RETURN
2450 '
2460 *LOAD_YOMI
2470 IF MOJI<10 THEN
2480 YOMI$="SND\0"+MID$(STR$(MOJI),2)+".SND"
2490 ELSE
2500 YOMI$="SND\"+MID$(STR$(MOJI),2)+".SND"
2510 ENDIF
2520 LOAD@ YOMI$,YOMI
2530 RETURN
2540 '
2550 *PALETTE
2560 PALETTE 0,[ 0, 0, 0]
2570 PALETTE 1,[ 0, 0,240]
2580 PALETTE 2,[128, 0,128]
2590 PALETTE 3,[192,240,176]
2600 PALETTE 4,[208,240,224]
2610 PALETTE 5,[176,240,112]
2620 PALETTE 6,[ 80,160, 48]
2630 PALETTE 7,[128,128,128]
2640 PALETTE 8,[ 64, 64, 64]
2650 PALETTE 9,[ 0,240, 0]
2660 PALETTE 10,[240, 0,192]
2670 PALETTE 11,[240, 0, 0]
2680 PALETTE 12,[240,112,128]
2690 PALETTE 13,[240,240,160]
2700 PALETTE 14,[240,240, 0]
2710 PALETTE 15,[255,255,255]
2720 RETURN